package database;

import utils.StrUtils;

/**
 * ValuedAttribute.java
 * Cette classe modelise un attribut de table avec une valeur associee.
 * Herite de Attribute.
 * @author Aubry Pirian
 * @version 0.5
 */
public class ValuedAttribute extends Attribute {
	
	/**
	 * Attributs complementaires
	 */
	private String value;	// Valeur de l'attribut
	private String operator;
	
	/**
	 * Constructeur de ValuedAttribute
	 * @param name	: nom de l'attribut
	 * @param avaluelue	: valeur de l'attribut
	 */
	public ValuedAttribute(String name, String value) throws NoSuchFieldException {
		super(name);
		this.value = StrUtils.strReplace(value,"'","\\'");
		this.operator = "=";
	}
	
	/**
	 * Constructeur de ValuedAttribute
	 * @param name	: nom de l'attribut
	 * @param avaluelue	: valeur de l'attribut
	 */
	public ValuedAttribute(String name, String value, String operator) throws NoSuchFieldException {
		super(name);
		this.value = StrUtils.strReplace(value,"'","\\'");
		this.operator = operator;
	}
	
	/**
	 * Constructeur de ValuedAttribute
	 * @param name	: nom de l'attribut
	 * @param value	: valeur de l'attribut
	 */
	public ValuedAttribute(String name, Object value) throws NoSuchFieldException {
		super(name);
		this.value = StrUtils.strReplace(value.toString(),"'","\\'");
		this.operator = "=";
	}
	
	/**
	 * Constructeur de ValuedAttribute
	 * @param name	: nom de l'attribut
	 * @param avaluelue	: valeur de l'attribut
	 */
	public ValuedAttribute(String name, Object value, String operator) throws NoSuchFieldException {
		super(name);
		this.value = StrUtils.strReplace(value.toString(),"'","\\'");
		this.operator = operator;
	}

	/**
	 * Accesseur de la valeur de l'attribut
	 */
	public String getValue() { return this.value; }
	
	/**
	 * Afficheur de l'objet
	 */
	public String toString() {
		String s = "(";
		s += "`"+this.name+"`";
		s += " "+this.operator.toUpperCase()+" ";
		s += "'"+this.value+"'";
		s += ")";
		return s;
	}
	
}
